package com.chenqi.tool.recycleview.drag

import android.content.Context
import com.chenqi.tool.recycleview.base.BaseRecycleViewAdapter
import com.chenqi.tool.recycleview.base.ItemTouchCallBack
import java.util.*

/**
 * 作者: CQ
 * 日期: 2021-03-16
 * 说明:支持拖动排序或滑动删除 的适配器
 */
abstract class DragRecycleViewAdapter<T>(context: Context, list: MutableList<T>) :
    BaseRecycleViewAdapter<T>(context, list),
    ItemTouchCallBack.OnItemTouchListener {

    /**
     * 移动排序
     */
    override fun onMove(fromPosition: Int, toPosition: Int) {
        //处理拖动排序
        //使用Collection对数组进行重排序，目的是把我们拖动的Item换到下一个目标Item的位置
        Collections.swap(list, fromPosition, toPosition)
        //通知Adapter它的Item发生了移动
        notifyItemMoved(fromPosition, toPosition)
    }

    /**
     * 侧滑删除
     */
    override fun onSwiped(position: Int) {
        list.removeAt(position)
        notifyItemRemoved(position)
        notifyItemRangeChanged(position, list.size - position) // 这一句加上，删除item后会自动刷新布局
    }

}